#ifndef VZLPR_ADDON_CALLBACK_H_
#define VZLPR_ADDON_CALLBACK_H_

#include "Common.h"
#include "AsyncModel.h"
#include <modp_b64/modp_b64.h>

void __stdcall OnCommonNotifyCallback(
  VzLPRClientHandle handle, 
  void *pUserData,
  VZ_LPRC_COMMON_NOTIFY eNotify, 
  const char *pStrDetail);

void __stdcall OnFindDeviceCallback(
  const char *pStrDevName,
  const char *pStrIPAddr,
  WORD usPort1,
  WORD usPort2,
  unsigned int SL,
  unsigned int SH,
  void *pUserData);

int __stdcall OnPlateInfoCallback(
  VzLPRClientHandle handle,
  void *pUserData,
  const TH_PlateResult *pResult,
  unsigned uNumPlates,
  VZ_LPRC_RESULT_TYPE eResultType,
  const VZ_LPRC_IMAGE_INFO *pImgFull,
  const VZ_LPRC_IMAGE_INFO *pImgPlateClip);

void __stdcall OnWhiteListCallback(
  VZLPRC_WLIST_CB_TYPE type, 
  const VZ_LPR_WLIST_VEHICLE *pLP,
  const VZ_LPR_WLIST_CUSTOMER *pCustomer,
  void *pUserData);

void __stdcall OnSerialDataCallback(
	int nSerialHandle, 
	const unsigned char *pRecvData, 
	unsigned uRecvSize, 
	void *pUserData);

void __stdcall OnGpioRecvCallback(
	VzLPRClientHandle handle, 
	int nGPIOId, 
	int nVal, 
	void *pUserData);

void __stdcall OnTcpRecvCallback(
	VzLPRClientHandle handle,
	const char *pData,
	int dataLen,
	void *pUserData);

void __stdcall OnRequestTalkCallback(
	VzLPRClientHandle handle,
	int state, 
	const char* error_msg, 
	void* pUserData);

#endif //  VZLPR_ADDON_CALLBACK_H_
